python 高阶函数
对于函数式编程的精髓我还没有完全了解,但是高阶函数的编程方式确实很好。我感觉类似装饰器。
filter
filter( func , x ) x 列表中的元素一次代入 func , 如果结果为真 True,返回这个元素。 如果函数 func 有两个或更多的输入参数,filter( func, x , y , ... ),将 x , y ,
... 的每一个列表的第i个分别代入。
def func(x): return x % 3 == 1 a = range(10) print a print filter(func,a) >> [0,1,2,3,4,5,6,7,8,9] >> [1,4,7]
map
map( func , x ) x 列表中每个元素代入 func,结果以类表形式返回。故 func 应该表示的是某种运算。
def func(x): return x*x a = range(10) print a print map(func,a) >> [0,1,2,3,4,5,6,7,8,9] >> [0,1,4,9,16,25,36,49,64,81]
reduce
reduce( func ,x ) 这个就有点不好陈述了,看例子吧。
def func(x,y): return x+y a = range(10) print a print reduce(func,a) >> [0,1,2,3,4,5,6,7,8,9] >> 45
首先取出 x,y=0,1; func 返回 3 , 然后取出2,并使得 x,y=3,2;取得结果后,再将结果与列表中的数据一同作为函数输入,重新代入。
lambda
这个知道的就早些,在简单的看了 scheme 后,就更加熟悉了。